#!/usr/bin/python
import sys
import os
import pexpect
import time
import pp
def expectandshow(child, expect):
        index=child.expect(expect)
        print child.before,child.after,
        return index
def set_salve_nfs(Salve_IP,Master_IP):
	argv1="/dev/VolGroup00/LogVol00 /                       ext3    defaults        1 1"
        argv2="LABEL=/boot             /boot                   ext3    defaults        1 2"
        argv3="tmpfs                   /dev/shm                tmpfs   defaults        0 0"
        argv4="devpts                  /dev/pts                devpts  gid=5,mode=620  0 0"
        argv5="sysfs                   /sys                    sysfs   defaults        0 0"
        argv6="proc                    /proc                   proc    defaults        0 0"

	password="passw0rd"

        cmd = "ssh root@"+Salve_IP+" " + \
                "echo \'" + argv1 + "\' > /etc/fstab;" + \
                "echo \'" + argv2 + "\' >> /etc/fstab;" + \
                "echo \'" + argv3 + "\' >> /etc/fstab;" + \
                "echo \'" + argv4 + "\' >> /etc/fstab;" + \
                "echo \'" + argv5 + "\' >> /etc/fstab;" + \
                "echo \'" + argv6 + "\' >> /etc/fstab;" + \
                "echo \'"+ Master_IP+":/home /home nfs defaults 0 0\' >> /etc/fstab ;" + \
                "/sbin/chkconfig netfs off;" + \
                "/sbin/chkconfig netfs on;" + \
                "mount /home"

        print cmd
        scp_child=pexpect.spawn(cmd)
        index=expectandshow(scp_child, \
                                ['Are you sure you want to continue connecting', \
                                "root@"+Salve_IP+"'s password:", \
                                pexpect.TIMEOUT, \
                                pexpect.EOF])
        if index == 0:
                scp_child.sendline('yes')
                ret = expectandshow(scp_child, ["root@"+Salve_IP+"'s password:", pexpect.EOF])
                if ret == 0:
                        scp_child.sendline(password)
                        expectandshow(scp_child, [pexpect.EOF])
                elif ret == 1:
                        pass
        elif index == 1:
                scp_child.sendline(password)
                expectandshow(scp_child, [pexpect.EOF])
        elif index == 2:
                print "timeout, ignore and continue."
        elif index == 3:
                pass


path=sys.path[0]

fp_intr = open(path+'/ip','r')

Master_IP=fp_intr.readline()
length=len(Master_IP)
Master_IP=Master_IP[0:length-1]
print Master_IP

order=[]
total_ip = 0
while True:
        line = fp_intr.readline()
        length = len(line)
        if length == 0: # Zero length indicates EOF
                break

        line=line[0:length-1]
        print line
	total_ip += 1
        order.append(line)
fp_intr.close();

start_time = time.time()

ppservers = ()

job_server = pp.Server(total_ip, ppservers=ppservers)

print "Starting pp with", job_server.get_ncpus(), "workers"

jobs = []

for ip in order:
        jobs.append(job_server.submit(set_salve_nfs, (ip,Master_IP,), (expectandshow,), ("pexpect",)))



for job in jobs:
    job()

print "Time elapsed: ", time.time() - start_time, "s"

job_server.print_stats()


